/**
 * 
 */
package com.mc.hutool;

import java.io.File;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.RandomUtil;

/**
 * @author w.weizhen
 *
 */
public class DateUtilTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
//        String dateStr = "2023-10-25T09:43:29Z";
//        Date date = DateUtil.parse(dateStr);
////        DateTime newDate3 = DateUtil.offsetHour(date, 8);
//        String formatDateTime = DateUtil.formatDateTime(date);
//        System.out.println(formatDateTime);
        
//        //依据已有日期时间，生成随机的日期时间
//        offset();
        
//        //生成指定长度的随机数
//        for (int i = 0; i < 100; i++)
//        {
//            String str = RandomUtil.randomInt(100, 1000) + "" + RandomUtil.randomInt(10, 100) + "" + RandomUtil.randomInt(10, 1000);
//            int size = 8;// 内容长度
//            String padStr = "0";// 填补内容
//            str = StringUtils.rightPad(str, size, padStr);
//            System.out.println(str);
//        }
        
//        DateTime dt = DateUtil.lastMonth();
//        System.out.println(dt.toDateStr());
//        System.out.println(dt.toString());
//        
//        dt = DateUtil.offsetDay(dt, 0);
//        System.out.println(dt.toDateStr());
//        System.out.println(dt.toString());
//        
//        dt = DateUtil.offsetDay(dt, 1);
//        System.out.println(dt.toDateStr());
//        System.out.println(dt.toString());
//        
//        String today= DateUtil.today();
//        System.out.println(today);
        
        
        DateTime dt = DateUtil.offsetDay(DateUtil.date(), -10);
//        System.out.println(dt.toDateStr());
//        System.out.println(dt.toString());
        
//        for (int i = 0; i <= 10; i++)
//        {
//            //日期字符串,形式为 2024-09-10
//            String day = DateUtil.offsetDay(dt, i).toDateStr();
//            System.out.println(day);
//            
//            for (int j = 0; j < 24; j++)
//            {
//                //拼接开始日期时间和结束日期时间
//                String h = j + "";
//                h = StringUtils.leftPad(h, 2, "0");
//                String begin_time = day + " " + h + ":00:00";
//                String end_time = day + " " + h + ":59:59";
//                System.out.println(begin_time);
//                System.out.println(end_time);
//            }
//            
//        }
        
//        //2024-10-14 10:12:55
//        String now = DateUtil.now();
//        System.out.println(now);
        
        
        
//        String startDateTime = "2024-05-01 00:00:00";
//        Date date = DateUtil.parse(startDateTime);
//        date = DateUtil.offset(date, DateField.HOUR_OF_DAY, 2);
//        
////        date = DateUtil.offset(date, DateField.SECOND, -1);
//        
//        String doneDateTime = DateUtil.formatDateTime(date);
//        System.out.println(doneDateTime);
        
        
//        String startDateTime = "2024-11-11 00:00:00";
//        Integer frequency = 500;
//        for (int i = 0; i < frequency; i++)
//        {
//            System.out.println("");
//            System.out.println(startDateTime);
//            
//            //计算结束时间: 在开始时间基础上推后两个小时
//            //如果结束时间大于等于当前时间，则不进行查询
//            Date date = DateUtil.parse(startDateTime);//2024-05-01 00:00:00
//            date = DateUtil.offset(date, DateField.HOUR_OF_DAY, 4 * (i + 1));//2024-05-01 02:00:00
//            date = DateUtil.offset(date, DateField.SECOND, -1);//2024-05-01 01:59:59
//            String endDateTime = DateUtil.formatDateTime(date);
//            
//            System.out.println(endDateTime);
//            
//            date = DateUtil.parse(endDateTime);
//            date = DateUtil.offset(date, DateField.SECOND, 1);
//            startDateTime = DateUtil.formatDateTime(date);
//            
//            System.out.println(DateUtil.now());
//            long betweenDay = DateUtil.between(DateUtil.parse(DateUtil.now()), DateUtil.parse(startDateTime), DateUnit.SECOND);
//            System.out.println(betweenDay);
//            
//        }
        
        
//        String startDateTime = "2024-11-11 00:00:00";
//        Integer frequency = 500;
//        for (int i = 0; i < frequency; i++)
//        {
//            
//            //计算结束时间: 在开始时间基础上推后两个小时
//            //如果结束时间大于等于当前时间，则不进行查询
//            Date date = DateUtil.parse(startDateTime);//2024-05-01 00:00:00
//            date = DateUtil.offset(date, DateField.HOUR_OF_DAY, 4 * (i + 1));//2024-05-01 02:00:00
//            date = DateUtil.offset(date, DateField.SECOND, -1);//2024-05-01 01:59:59
//            String endDateTime = DateUtil.formatDateTime(date);
//            DateUtil.format(date, "yyyyMMddHHmmss");
//            DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss");
//            
//            System.out.println("");
//            System.out.println(DateUtil.format(date, "yyyyMMddHHmmss"));
//            System.out.println(DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss"));
//            
//            System.out.println(NumberUtil.sub(DateUtil.format(date, "yyyyMMddHHmmss"), DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss")));
//            
//        }
        
//        //去除字符串前后空格
//        String str = "  Hello World!  ";
//        System.out.println(str);
//        str = str.trim();
//        System.out.println(str);
//        str = " ";
//        System.out.println(str);
//        str = str.trim();
//        System.out.println(str);
        
        
        
        
        
        
        Date date = DateUtil.parse("2024-11-21 02:00:00");
        BigDecimal differ = NumberUtil.sub(DateUtil.format(date, "yyyyMMddHHmmss"), DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss"));
        System.out.println(differ.intValue());
        System.out.println(differ.intValue() >= 0);
        
        
        
        
        
        
    }
    
    private static void offset()
    {
        //文件路径
        String user_dir = System.getProperty("user.dir") + File.separator + "data" + File.separator + "offset" + File.separator;
        //读取已有时间和生成随机时间
        FileReader fileReader = new FileReader(user_dir + "date.txt");
        FileWriter writer = new FileWriter(user_dir + "offset.txt");
        //创建目录
        //FileUtil.mkdir(user_dir);
        List<String> lines = fileReader.readLines();
        for (int i = 0; i < lines.size(); i++)
        {
            //将字符创转为日期时间
            DateTime dateTime = new DateTime(lines.get(i), DatePattern.NORM_DATETIME_FORMAT);
            //日期时间加一个随机的小时数
            dateTime = dateTime.offset(DateField.HOUR, RandomUtil.randomInt(100, 40000));
            System.out.println(dateTime.toString());
            //使用行追加，每一个日期时间一行。
            writer.appendLines(Arrays.asList(dateTime.toString()));
        }
        
    }
    
}